// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 创建bootstrap弹窗
let toastBox = document.querySelector('#myToast')
const toast = new bootstrap.Toast(toastBox, {
  animate: true,
  autohide: true,
  delay: 1000
})

const show = msg => {
  // alert('用户名必须在2~30位之间')
  document.querySelector('.toast-body').innerHTML = msg
  // 让 toast 显示出来
  toast.show()
}

// 配置基地址

axios.defaults.baseURL = 'http://ajax-api.itheima.net'

// 请求拦截器 只要发送任何请求 都会被这个拦截器 先拦住
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么 config 配置对象
  // console.log(config)
  // 除了 登录和注册两个接口 不需要 身份认证 其他的接口都需要身份认证
  // 发送 ajax 请求之前 只有 本地存储里面 有 token 表示用户登录了 其他的请求 需要携带 Authorization· 请求头
  const token = localStorage.getItem('CMS85')
  if (token) {
    config.headers.Authorization = token
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
})


// 添加响应拦截器
/*
  服务器响应数据 成功 走第一个回调函数
  成功 可以将数据 脱壳 登录和注册的 成功的响应都需要修改

  服务器响应数据 失败 走第二个回调函数
  token 过期  在想要获取数据 同样的会报 401 模拟 token 过期 找到 本地存储 修改 token 的值 401 的错误 
  判断 响应状态码的值是不是401
  解决方案：
  1. 需要跳转登录页面让用户重新登录
  2. 清空本地存储里面的数据 

*/
axios.interceptors.response.use(function (response) {
  // console.log(response.data) 
  // response 其实就是 axios().then() 里面的回调函数 
  // 对响应数据做点什么
  return response.data
}, function (error) {
  // console.dir(error.response.status)
  if (error.response.status === 401) {
    location.href = './login.html'
    localStorage.clear()
  }
  // 对响应错误做点什么
  return Promise.reject(error);
})

